are not guaranteed to be unique.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
/**
- * Get a reference to the object with the specified label.
+ * Get all the host instances with the given label.
*/
extern bool
-xen_host_get_by_name_label(xen_session *session, xen_host *result, char *label);
+xen_host_get_by_name_label(xen_session *session, struct xen_host_set **result, char *label);
/**
/**
- * Get a reference to the object with the specified label.
+ * Get all the network instances with the given label.
*/
extern bool
-xen_network_get_by_name_label(xen_session *session, xen_network *result, char *label);
+xen_network_get_by_name_label(xen_session *session, struct xen_network_set **result, char *label);
/**
/**
- * Get a reference to the object with the specified label.
+ * Get all the SR instances with the given label.
*/
extern bool
-xen_sr_get_by_name_label(xen_session *session, xen_sr *result, char *label);
+xen_sr_get_by_name_label(xen_session *session, struct xen_sr_set **result, char *label);
/**
/**
- * Get a reference to the object with the specified label.
+ * Get all the VDI instances with the given label.
*/
extern bool
-xen_vdi_get_by_name_label(xen_session *session, xen_vdi *result, char *label);
+xen_vdi_get_by_name_label(xen_session *session, struct xen_vdi_set **result, char *label);
/**
/**
- * Get a reference to the object with the specified label.
+ * Get all the VM instances with the given label.
*/
extern bool
-xen_vm_get_by_name_label(xen_session *session, xen_vm *result, char *label);
+xen_vm_get_by_name_label(xen_session *session, struct xen_vm_set **result, char *label);
/**
bool
-xen_host_get_by_name_label(xen_session *session, xen_host *result, char *label)
+xen_host_get_by_name_label(xen_session *session, struct xen_host_set **result, char *label)
{
abstract_value param_values[] =
{
.u.string_val = label }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_set;
*result = NULL;
XEN_CALL_("host.get_by_name_label");
bool
-xen_network_get_by_name_label(xen_session *session, xen_network *result, char *label)
+xen_network_get_by_name_label(xen_session *session, struct xen_network_set **result, char *label)
{
abstract_value param_values[] =
{
.u.string_val = label }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_set;
*result = NULL;
XEN_CALL_("network.get_by_name_label");
bool
-xen_sr_get_by_name_label(xen_session *session, xen_sr *result, char *label)
+xen_sr_get_by_name_label(xen_session *session, struct xen_sr_set **result, char *label)
{
abstract_value param_values[] =
{
.u.string_val = label }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_set;
*result = NULL;
XEN_CALL_("SR.get_by_name_label");
bool
-xen_vdi_get_by_name_label(xen_session *session, xen_vdi *result, char *label)
+xen_vdi_get_by_name_label(xen_session *session, struct xen_vdi_set **result, char *label)
{
abstract_value param_values[] =
{
.u.string_val = label }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_set;
*result = NULL;
XEN_CALL_("VDI.get_by_name_label");
bool
-xen_vm_get_by_name_label(xen_session *session, xen_vm *result, char *label)
+xen_vm_get_by_name_label(xen_session *session, struct xen_vm_set **result, char *label)
{
abstract_value param_values[] =
{
.u.string_val = label }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_set;
*result = NULL;
XEN_CALL_("VM.get_by_name_label");
/*
- Copyright (c) 2006 XenSource, Inc.
+ * Copyright (c) 2006 XenSource, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+ */
#define _GNU_SOURCE
#include <inttypes.h>
/*
* Create a new disk for the new VM.
*/
- xen_sr sr;
- if (!xen_sr_get_by_name_label(session, &sr, "Local"))
+ xen_sr_set *srs;
+ if (!xen_sr_get_by_name_label(session, &srs, "Local") ||
+ srs->size < 1)
{
fprintf(stderr, "SR lookup failed.\n");
print_error(session);
xen_sr_record_opt sr_record =
{
- .u.handle = sr
+ .u.handle = srs->contents[0]
};
xen_vdi_record vdi0_record =
{
fprintf(stderr, "VDI creation failed.\n");
print_error(session);
- xen_sr_free(sr);
+ xen_sr_set_free(srs);
xen_vm_free(vm);
return;
}
+ xen_vm_record_opt vm_record_opt =
+ {
+ .u.handle = vm
+ };
+ xen_vdi_record_opt vdi0_record_opt =
+ {
+ .u.handle = vdi0
+ };
xen_vbd_record vbd0_record =
{
- .vm = vm,
- .vdi = vdi0,
+ .vm = &vm_record_opt,
+ .vdi = &vdi0_record_opt,
.device = "sda1",
.mode = XEN_VBD_MODE_RW,
.driver = XEN_DRIVER_TYPE_PARAVIRTUALISED
print_error(session);
xen_vdi_free(vdi0);
- xen_sr_free(sr);
+ xen_sr_set_free(srs);
xen_vm_free(vm);
return;
}
xen_uuid_free(vbd0_uuid);
xen_vbd_free(vbd0);
xen_vdi_free(vdi0);
- xen_sr_free(sr);
+ xen_sr_set_free(srs);
xen_vm_free(vm);
return;
}
xen_uuid_free(vbd0_uuid);
xen_vbd_free(vbd0);
xen_vdi_free(vdi0);
- xen_sr_free(sr);
+ xen_sr_set_free(srs);
xen_vm_free(vm);
}